﻿using System;
using System.IO;
using Newtonsoft.Json;

namespace MTPAutoBackup
{
    public class ConfigUtil
    {
        public static string GetDBPath()
        {
            // 获取当前执行目录
            //string exeDirectory = AppDomain.CurrentDomain.BaseDirectory;
            string configFilePath = Path.Combine(GetConfigJson().LocalPath, "auto_backup.db3");

            // 检查文件是否存在
            // if (!File.Exists(configFilePath))
            // {
            //     // 获取文件的上级目录
            //     string directoryPath = Path.GetDirectoryName(configFilePath);
            //
            //     // 检查上级目录是否存在
            //     if (!Directory.Exists(directoryPath))
            //     {
            //         // 如果目录不存在，创建目录
            //         Directory.CreateDirectory(directoryPath);
            //         Console.WriteLine($"目录已创建: {directoryPath}");
            //     }
            //
            //     // 创建文件
            //     using (FileStream fs = File.Create(configFilePath))
            //     {
            //         Console.WriteLine($"文件已创建: {configFilePath}");
            //     }
            // }

            return configFilePath;
        }

        public static string SerializeObject(object value)
        {
            // 将 Config 对象转换为 JSON 字符串
            string jsonString = JsonConvert.SerializeObject(value, Formatting.Indented);
            return jsonString;
        }

        public static Config GetConfigJson()
        {
            // 获取当前执行目录
            string exeDirectory = AppDomain.CurrentDomain.BaseDirectory;
            string configFilePath = Path.Combine(exeDirectory, "MTPAutoBackup_config.json");

            // 检查文件是否存在
            if (!File.Exists(configFilePath))
            {
                throw new FileNotFoundException("配置文件 MTPAutoBackup_config.json 未找到。");
            }

            // 读取文件内容
            string jsonContent = File.ReadAllText(configFilePath);

            // 解析 JSON 到 Config 对象
            Config config = JsonConvert.DeserializeObject<Config>(jsonContent);

            return config;
        }
    }
}